// 声明一个变量a，类型为number
let a: number;

// a 的类型为number，在以后使用过程中，只能赋值为number类型的值
a = 10;
// a = 'hello'; // 报错，因为a的类型为number，不能赋值为string类型的值

// 声明完变量直接进行赋值
let b: number = 20;

// 20240314 p3 15:05

// 如果声明和赋值同时进行，TS会自动进行类型推断
let c = false;
c = true;

// js中的函数是不考虑参数的类型和个数的
// function sum(a, b) {
//   return a + b;
// }

// console.log(sum(10, 20)); // 30
// console.log(sum(10, '20')); // 1020

function sum(a: number, b: number): number{
  return a + b;
}
// function sum(a: number, b: number): number{
//     return a + 'b'; // Type 'string' is not assignable to type 'number'.ts(2322)
// }

sum(10, 20);
// sum(10); // Expected 2 arguments, but got 1.ts(2554)
// sum(10, 20, 11); // Expected 2 arguments, but got 3.ts(2554)
// sum(10, '20'); // Argument of type 'string' is not assignable to parameter of type 'number'.ts(2345)
